<?php

/**
 * 企业主体控制器
 */

declare(strict_types=1);

namespace app\controller\home;

use app\BaseController;
use think\facade\Db;
use think\facade\Request;

class Cate extends BaseController
{
    /**
     * 获取企业主体列表
     */
    public function enterprise()
    {
        try {
            // 查询企业主体列表
            $list = Db::name('enterprise')
                ->order('create_time', 'asc')
                ->select()
                ->toArray();

            // 格式化时间
            foreach ($list as &$item) {
                $item['create_time_format'] = $item['create_time'] ? date('Y-m-d H:i:s', $item['create_time']) : '';
                $item['update_time_format'] = $item['update_time'] ? date('Y-m-d H:i:s', $item['update_time']) : '';

                // 状态名称
                $statusNames = [
                    -1 => '删除',
                    0 => '禁用',
                    1 => '启用'
                ];
                $item['status_name'] = isset($statusNames[$item['status']]) ? $statusNames[$item['status']] : '未知';
            }

            return json([
                'code' => 0,
                'msg' => 'success',
                'data' => $list
            ]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '查询失败: ' . $e->getMessage()]);
        }
    }

    /**
     * 新建/编辑企业主体
     */
    public function enterprise_add()
    {
        $param = Request::param();

        // 数据验证
        if (empty($param['title'])) {
            return json(['code' => 400, 'msg' => '企业名称不能为空']);
        }

        $data = [
            'title' => $param['title'],
            'city' => $param['city'] ?? '',
            'bank' => $param['bank'] ?? '',
            'bank_sn' => $param['bank_sn'] ?? '',
            'tax_num' => $param['tax_num'] ?? '',
            'phone' => $param['phone'] ?? '',
            'address' => $param['address'] ?? '',
            'remark' => $param['remark'] ?? '',
            'status' => $param['status'] ?? 1,
            'update_time' => time()
        ];

        try {
            if (isset($param['id']) && $param['id'] > 0) {
                // 编辑企业主体
                $data['id'] = $param['id'];
                Db::name('enterprise')->update($data);
                $id = $param['id'];
            } else {
                // 新建企业主体
                $data['create_time'] = time();
                $id = Db::name('enterprise')->insertGetId($data);
            }

            return json(['code' => 0, 'msg' => '保存成功', 'data' => ['id' => $id]]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '保存失败: ' . $e->getMessage()]);
        }
    }

    /**
     * 删除企业主体
     */
    public function enterprise_del()
    {
        $param = Request::param();

        // 数据验证
        if (empty($param['id'])) {
            return json(['code' => 400, 'msg' => '参数错误']);
        }

        try {
            // 软删除企业主体
            Db::name('enterprise')
                ->where('id', $param['id'])
                ->update([
                    'status' => -1,
                    'update_time' => time()
                ]);

            return json(['code' => 0, 'msg' => '删除成功']);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '删除失败: ' . $e->getMessage()]);
        }
    }

    /**
     * 企业主体设置（检查）
     */
    public function enterprise_check()
    {
        try {
            // 查询启用的企业主体列表
            $list = Db::name('enterprise')
                ->where('status', 1)
                ->order('create_time', 'asc')
                ->select()
                ->toArray();

            return json([
                'code' => 0,
                'msg' => 'success',
                'data' => $list
            ]);
        } catch (\Exception $e) {
            return json(['code' => 500, 'msg' => '查询失败: ' . $e->getMessage()]);
        }
    }
}
